package CreatorPattern.Singleton;

/**
 * @author: Themberfue
 * @date: 2025/8/10 11:12
 * @description:
 */
public class LazySingleton {
    // volatile 防止指令重排序
    private static volatile LazySingleton instance;

    private LazySingleton() {}

    public static LazySingleton getInstance() {
        if (instance == null) { // 第一次判断（无锁）
            synchronized (LazySingleton.class) {
                if (instance == null) { // 第二次判断（有锁）
                    instance = new LazySingleton();
                }
            }
        }
        return instance;
    }

    public void showMessage() {
        System.out.println("Lazy Singleton!");
    }
}

